home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The X-Philes (2nd Revision)
/
The X-Philes Number 1 (1995).iso
/
xphiles
/
hp48_1
/
sface
< prev
next >
Wrap
Internet Message Format
|
1995-03-31
|
20KB
Path: seq!spell
From: David D Jansen <eldorado@ecn.purdue.edu>
Subject: v01i049: sface - surface plotter 3D v1.0, Part01/01
Newsgroups: comp.sources.hp48
Followup-To: comp.sys.hp48
Approved: spell@seq.uncwil.edu
Checksum: 1866833180 (verify with brik -cv)
Submitted-by: David D Jansen <eldorado@ecn.purdue.edu>
Posting-number: Volume 1, Issue 49
Archive-name: sface/part01
BEGIN_RDME sface.rdme
[ If you have Jim Donnelly's library TLLIB loaded you will
probably have problems downloading the rpl source. His library
has a program MAT and the rpl has a varable MAT which causes the
download to fail. To get arround this just download either the
asc or uuencoded source. -chris]
END_RDME
BEGIN_DOC sface.doc
This is a repost of a three dimensional surface plotter. After searching
several ftp sites and noticing it wasn't there I decided to do this repost.
There are two routines, a parameter variable and the equation and matrix
data in this directory. The function SFACE creates from the EQ, a data
surface that is stored in the matrix, MAT. From this matrix, TRACE draws
the plot to the screen. The parameters stored in SPAR (like PPAR) affect
mostly the TRACE function. This is useful for viewing at different angles
of the same surface area, as the same surface is not recalculated each time.
The variables in SPAR are: Xmin, Xmax, Xincrement, Ymin, Ymax, Yincrement,
theta, phi, p, z, h, v.
Xmin and Xmax represent the range to be graphed, Xincrement is the value of
the spacing between plotted points. The Ymin, Ymax, Yincrement is the same
but for the Y dimension.
Theta and phi are the angles at which the X and Y axis are plotted. These
can be changed to give a more square or parallogram shape to the X-Y plane.
To rotate a graph, choose the TRANSlate function in the matrix directory.
Then reTRACE the graph.
H and v are the variables that control the horizontal and vertical scaling,
pixelwise. This will compress the graph (anti-zoom). After changing these
variables, just reTRACE.
P and z work in conjunction to plot certain elevations of the data. To plot
only that part of the graph greater than 0 for instance, set P to a positive
value, to plot all of the graph below 0 set P to a negative value. When
P is 0 the ploting mode is returned to normal. The actual cutoff value used
is stored in variable Z.
This is public domain.
If you have any questions, comments or suggestions, I'll try to help.
Dave
END_DOC
BYTES: #E137h 3866.5
BEGIN_RPL sface
%%HP: T(3)A(D)F(.);
DIR
SFACE \<<
SPAR OBJ\-> DROP 0
\-> xa xb xi ya yb yi theta phi p z h v d
\<<
-20 -21 -22 SF CF CF
RAD
ya yb FOR J
J 'Y' STO
xa xb FOR I
I 'X' STO DEPTH 'd' STO
IFERR EQ \->NUM THEN
DEPTH d - DROPN 0
END
IF DUP TYPE 1 == THEN
DROP 0
END
yi STEP
xi STEP
yb ya - ABS 1 +
xb xa - ABS 1 +
2 \->LIST
\->ARRY 'MAT' STO
{ X Y } PURGE
DEG
-20 -21 -22 CF SF SF
TRACE
\>>
\>>
TRACE \<<
SPAR OBJ\-> DROP \->
xa xb xi ya yb yi theta phi p z h v
\<<
0 0 0 0 0 \-> cphi sphi ctheta stheta prv
\<<
PICT PURGE
{ # 0d # 0d } PVIEW
AXIS
RAD
theta \pi * 180 / \->NUM DUP
SIN 'stheta' STO
COS 'ctheta' STO
phi \pi * 180 / \->NUM DUP
SIN 'sphi' STO
COS 'cphi' STO
ya yb FOR j
j cphi * xa ctheta * - h * 65 + 0 RND # 1d *
63 j NEG sphi * xa stheta * - v * 31 + 0 RND
MAT 1 j ya - yi * 1 + 2 \->LIST GET
IF p 0 \=/ THEN
IF DUP DUP z < p 0 > AND SWAP z > p 0 < AND OR THEN
DROP z
END
END
+ - # 1d * 2 \->LIST 'prv' STO
1 xa + xb FOR i
prv j cphi * i ctheta * - h * 65 + 0 RND # 1d *
63 j NEG sphi * i stheta * - v * 31 + 0 RND
MAT i xa - xi * 1 + j ya - yi * 1 + 2 \->LIST GET
IF p 0 \=/ THEN
IF DUP DUP z < p 0 > AND SWAP z > p 0 < AND OR THEN
DROP z
END
END
+ - # 1d * 2 \->LIST DUP 'prv' STO
LINE
xi STEP
yi STEP
xa xb FOR i
ya cphi * i ctheta * - h * 65 + 0 RND # 1d *
63 ya NEG sphi * i stheta * - v * 31 + 0 RND
MAT i xa - xi * 1 + 1 2 \->LIST GET
IF p 0 \=/ THEN
IF DUP DUP z < p 0 > AND SWAP z > p 0 < AND OR THEN
DROP z
END
END
+ - # 1d * 2 \->LIST 'prv' STO
1 ya + yb FOR j
prv j cphi * i ctheta * - h * 65 + 0 RND # 1d *
63 j NEG sphi * i stheta * - v * 31 + 0 RND
MAT i xa - xi * 1 + j ya - yi * 1 + 2 \->LIST GET
IF p 0 \=/ THEN
IF DUP DUP z < p 0 > AND SWAP z > p 0 < AND OR THEN
DROP z
END
END
+ - # 1d * 2 \->LIST DUP 'prv' STO
LINE
yi STEP
xi STEP
DEG
PICT RCL 'GRPH' STO
DO
UNTIL KEY END DROP
\>>
\>>
\>>
AXIS \<<
SPAR OBJ\-> DROP \->
xa xb xi ya yb yi theta phi p z h v
\<<
DEG
{ # 65d # 32d } DUP DUP
{ # 65d # 0d } LINE
10 h * theta COS * NEG 65 + 0 RND # 1d *
63 10 v * theta SIN * NEG 31 + - 0 RND # 1d *
2 \->LIST LINE
10 h * phi COS * 65 + 0 RND # 1d *
63 10 v * phi SIN * NEG 31 + - 0 RND # 1d *
2 \->LIST LINE
\>>
\>>
SPAR { -5 5 1 -5 5 1 30 45 0 0 5 3 }
EQ 'Y^2-X^2'
MAT [[ 0 9 16 21 24 25 24 21 16 9 0 ]
[ -9 0 7 12 15 16 15 12 7 0 -9 ]
[ -16 -7 0 5 8 9 8 5 0 -7 -16 ]
[ -21 -12 -5 0 3 4 3 0 -5 -12 -21 ]
[ -24 -15 -8 -3 0 1 0 -3 -8 -15 -24 ]
[ -25 -16 -9 -4 -1 0 -1 -4 -9 -16 -25 ]
[ -24 -15 -8 -3 0 1 0 -3 -8 -15 -24 ]
[ -21 -12 -5 0 3 4 3 0 -5 -12 -21 ]
[ -16 -7 0 5 8 9 8 5 0 -7 -16 ]
[ -9 0 7 12 15 16 15 12 7 0 -9 ]
[ 0 9 16 21 24 25 24 21 16 9 0 ]]
END
END_RPL
BEGIN_ASC sface.asc
%%HP: T(3)A(D)F(.);
"69A20FF799A100000030D41445308E9209A7003392020000B0000B0000000000
0000000000000000000000009010000000000006101000000000000120100000
0000000420100000000000052010000000000004201000000000000120100000
0000000610000000000000009000000000000000000000000000000099000000
0000000000000000000000007010000000000002101000000000000510100000
0000000610100000000000051010000000000002100000000000000070000000
0000000000000000000000009910000000000006190000000000000079000000
0000000000000000000000005000000000000000800000000000000090000000
0000000080000000000000005000000000000000000000000000000079100000
0000000619100000000000012910000000000002190000000000000059000000
0000000000000000000000003000000000000000400000000000000030000000
0000000000000000000000005910000000000002191000000000000129100000
0000000429100000000000051900000000000000890000000000000039000000
0000000000000000000000001000000000000000000000000000000039000000
0000000089100000000000051910000000000004291000000000000529100000
0000000619000000000000009900000000000000490000000000000019000000
0000000000000000000000001900000000000000490000000000000099100000
0000000619100000000000052910000000000004291000000000000519000000
0000000089000000000000003900000000000000000000000000000010000000
0000000000000000000000003900000000000000891000000000000519100000
0000000429100000000000012910000000000002190000000000000059000000
0000000000000000000000003000000000000000400000000000000030000000
0000000000000000000000005910000000000002191000000000000129100000
0000000619000000000000007900000000000000000000000000000050000000
0000000080000000000000009000000000000000800000000000000050000000
0000000000000000000000007910000000000006190000000000000099000000
0000000000000000000000007010000000000002101000000000000510100000
0000000610100000000000051010000000000002100000000000000070000000
0000000000000000000000009900000000000000000000000000000090100000
0000000610100000000000012010000000000004201000000000000520100000
0000000420100000000000012010000000000006100000000000000090000000
00000000008B700205415208BA2084E201095ED2A2D20B184E201085ED2A2D20
B190DA1B2130D300040350514254047A20AD3A2D13A29C2A2AD3A2D13A29C2A2
3392010000000000000303392010000000000005404B2A24B2A2D13A23F2A2B2
13027000401485943540D9D20E163284E204035051425B7FC18DBF11C432D6E2
0208716D6E20208726D6E20208796D6E20209716D6E20209726D6E20209796D6
E20504786564716D6E2030078696D6E201007D6E2010A7D6E201086D6E201067
E1632993C147A20E4A20510001400000000000000E4A20510000200000000000
000B213078BF178BF147A20E4A20510001400000000000000E4A205100000000
00000000000B2130893E1339201000000000000010D6E201086EEDA1D6E20504
786564716505B1EEDA1599A133920100000000000056076BA14B2A255DB1E4A2
0510001000000000000000EEDA13392010000000000003603392010000000000
00010D6E201067EEDA1D6E20504786564716CA4B1EEDA1599A13392010000000
0000013076BA190DA14B2A255DB1E4A20510001000000000000000EEDA1ED2A2
387C1893E1339201000000000000010D6E201086EEDA1D6E2030078696505B1E
EDA133920100000000000056076BA14B2A255DB1E4A205100010000000000000
00EEDA1339201000000000000360339201000000000000010D6E201067EEDA1D
6E2030078696CA4B1EEDA1599A133920100000000000013076BA190DA14B2A25
5DB1E4A20510001000000000000000EEDA1ED2A2387C1893E1EF53293632B213
09B30050452514345450D9D20E163284E204035051425B7FC18DBF11C432D6E2
0208716D6E20208726D6E20208796D6E20209716D6E20209726D6E20209796D6
E20504786564716D6E2030078696D6E201007D6E2010A7D6E201086D6E201067
E16324B2A24B2A24B2A24B2A24B2A21C432D6E204036078696D6E20403707869
6D6E2060364786564716D6E2060374786564716D6E2030072767E1632634E1EF
E0247A20E4A20510000000000000000000E4A20510000000000000000000B213
00F2E184E2040148594354B3C1D6E20504786564716DBAA1EEDA133920200000
000000081050FA14E5A178BF1CA4B145632D6E206037478656471697632DCC02
505B145632D6E206036478656471697632DCC02D6E2030078696DBAA1EEDA133
920200000000000081050FA14E5A178BF1CA4B145632D6E20403707869697632
DCC02505B145632D6E20403607869697632DCC02D6E20209716D6E202097260A
132D6E2010A6D6E2010A6D6E204036078696EEDA1D6E20208716D6E206036478
6564716EEDA190DA1D6E201086EEDA133920100000000000056076BA14B2A255
DB1E4A20510001000000000000000EEDA1339201000000000000360D6E2010A6
599A1D6E204037078696EEDA1D6E20208716D6E2060374786564716EEDA190DA
1D6E201067EEDA133920100000000000013076BA14B2A255DB184E2030D41445
9C2A2D6E2010A6D6E2020971690DA1D6E20209796EEDA19C2A276BA1ED2A2387
C16C7D13CE22D6E2010074B2A2D9AE1AFE22D9D203CE2278BF178BF1D6E2010A
7EBBE1D6E2010074B2A2D5CE1387E1DBBF1D6E2010A7D5CE1D6E2010074B2A2E
BBE1387E1908E1AFE22D9D208DBF1D6E2010A7B21305DF22B21305DF2276BA19
0DA1E4A20510001000000000000000EEDA1ED2A2387C145632D6E20300727679
7632DCC029C2A2D6E2020871676BA1D6E202087260A132D6E201096D6E203007
2767D6E2010A6D6E204036078696EEDA1D6E201096D6E2060364786564716EED
A190DA1D6E201086EEDA133920100000000000056076BA14B2A255DB1E4A2051
0001000000000000000EEDA1339201000000000000360D6E2010A6599A1D6E20
4037078696EEDA1D6E201096D6E2060374786564716EEDA190DA1D6E201067EE
DA133920100000000000013076BA14B2A255DB184E2030D41445D6E201096D6E
2020871690DA1D6E20208796EEDA19C2A276BA1D6E2010A6D6E2020971690DA1
D6E20209796EEDA19C2A276BA1ED2A2387C16C7D13CE22D6E2010074B2A2D9AE
1AFE22D9D203CE2278BF178BF1D6E2010A7EBBE1D6E2010074B2A2D5CE1387E1
DBBF1D6E2010A7D5CE1D6E2010074B2A2EBBE1387E1908E1AFE22D9D208DBF1D
6E2010A7B21305DF22B21305DF2276BA190DA1E4A20510001000000000000000
EEDA1ED2A2387C178BF145632D6E203007276797632DCC02893E1D6E20208796
08332D6E2020979608332D6E20208716D6E202087260A132D6E201096D6E2020
9716D6E204036078696EEDA1D6E201096D6E2060364786564716EEDA190DA1D6
E201086EEDA133920100000000000056076BA14B2A255DB1E4A2051000100000
0000000000EEDA1339201000000000000360D6E20209716599A1D6E204037078
696EEDA1D6E201096D6E2060374786564716EEDA190DA1D6E201067EEDA13392
0100000000000013076BA14B2A255DB184E2030D41445D6E201096D6E2020871
690DA1D6E20208796EEDA19C2A276BA19C2A2ED2A2387C16C7D13CE22D6E2010
074B2A2D9AE1AFE22D9D203CE2278BF178BF1D6E2010A7EBBE1D6E2010074B2A
2D5CE1387E1DBBF1D6E2010A7D5CE1D6E2010074B2A2EBBE1387E1908E1AFE22
D9D208DBF1D6E2010A7B21305DF22B21305DF2276BA190DA1E4A205100010000
00000000000EEDA1ED2A2387C145632D6E203007276797632DCC029C2A2D6E20
20971676BA1D6E202097260A132D6E2010A6D6E2030072767D6E2010A6D6E204
036078696EEDA1D6E201096D6E2060364786564716EEDA190DA1D6E201086EED
A133920100000000000056076BA14B2A255DB1E4A20510001000000000000000
EEDA1339201000000000000360D6E2010A6599A1D6E204037078696EEDA1D6E2
01096D6E2060374786564716EEDA190DA1D6E201067EEDA13392010000000000
0013076BA14B2A255DB184E2030D41445D6E201096D6E2020871690DA1D6E202
08796EEDA19C2A276BA1D6E2010A6D6E2020971690DA1D6E20209796EEDA19C2
A276BA1ED2A2387C16C7D13CE22D6E2010074B2A2D9AE1AFE22D9D203CE2278B
F178BF1D6E2010A7EBBE1D6E2010074B2A2D5CE1387E1DBBF1D6E2010A7D5CE1
D6E2010074B2A2EBBE1387E1908E1AFE22D9D208DBF1D6E2010A7B21305DF22B
21305DF2276BA190DA1E4A20510001000000000000000EEDA1ED2A2387C178BF
145632D6E203007276797632DCC02893E1D6E2020979608332D6E20208796083
32993C1634E104B024563284E20407425058497632DCC023C032DE032378A19B
6328DBF1EF532EF53293632B213065E0050356414345450D9D20E163284E2040
35051425B7FC18DBF14B2A21C432D6E20208716D6E20208726D6E20208796D6E
20209716D6E20209726D6E20209796D6E20504786564716D6E2030078696D6E2
01007D6E2010A7D6E201086D6E201067D6E201046E1632339201000000000000
029339201000000000000129339201000000000000229472C15D2C15D2C14B3C
1D6E20209716D6E202097260A132D6E2010A4D6E2010A44563284E2010959763
2DCC02D6E20208716D6E202087260A132D6E201094D6E2010944563284E20108
597632DCC0244CF145632D6E20104697632DCC02FD332D9D2084E202054154E5
A1B2130F1732D9D2044CF1D6E20104690DA146CF14B2A2B21305DF223CE2278B
F168BC19C2A2279E1AFE22D9D208DBF14B2A2B21305DF22D6E2020979608332D
6E2020879608332D6E20209726D6E2020971690DA1F1AA19C2A276BA1D6E2020
8726D6E2020871690DA1F1AA19C2A276BA1ED2A2387C1900D14563284E2030D4
144597632DCC0247A2084E20108584E201095B2130EFE02993C1339201000000
0000000293392010000000000001293392010000000000002295D2C1472C1472
C184E20504525143454EF53293632B2130731E"
END_ASC
BYTES: #E137h 3866.5
BEGIN_UU sface.uu
begin 644 sface.bin
M2%!(4#0X+466*O!_F1H````#34%4`^@ID'H`,RD@```+`+``````````````7
M``````````D!``````!@`0$``````!`"`0``````0`(!``````!0`@$`````[
M`$`"`0``````$`(!``````!@`0`````````)````````````````````F0``3
M``````````````````<!```````@`0$``````%`!`0``````8`$!``````!05
M`0$``````"`!``````````<```````````````````"9`0``````8)$`````#
M````EP````````````````````4`````````"``````````)``````````@`4
M````````!0```````````````````)<!``````!@D0$``````!"2`0``````U
M()$`````````E0````````````````````,`````````!``````````#````:
M````````````````E0$``````""1`0``````$)(!``````!`D@$``````%"15
M`````````)@`````````DP````````````````````$`````````````````!
M``"3`````````)@!``````!0D0$``````$"2`0``````4)(!``````!@D0``K
M``````"9`````````)0`````````D0```````````````````)$`````````U
ME`````````"9`0``````8)$!``````!0D@$``````$"2`0``````4)$`````8
M````F`````````"3`````````````````````0```````````````````),`@
M````````F`$``````%"1`0``````0)(!```````0D@$``````""1````````A
M`)4````````````````````#``````````0``````````P``````````````@
M`````)4!```````@D0$``````!"2`0``````8)$`````````EP``````````5
M``````````4`````````"``````````)``````````@`````````!0``````0
M`````````````)<!``````!@D0````````"9````````````````````!P$`+
M`````"`!`0``````4`$!``````!@`0$``````%`!`0``````(`$`````````#
M!P```````````````````)D````````````````````)`0``````8`$!````4
M```0`@$``````$`"`0``````4`(!``````!``@$``````!`"`0``````8`$`[
M````````"0``````````N`<@4!0E@*L"2"X0D.4M*BVP@>0"`5C>HM("&PFM-
ML1(#/0!`,`45)$5`IP+:H](Q*LFBHCTJ':.2+"HS*1`````````P,),"`0``I
M````4`2THD(K*AVC,B\J*S$@!P`$05A)4P2=+>!A(T@N0#`%%22U]QS8^Q%,-
M(VTN((`7UN8"`GAB;2X@@)?6Y@(">6%M+B"0)];F`@)Y:6TN4$"'5D87UN8":
M`W!H:6TN$`#7Y@(!>FTN$(#6Y@(!=AXVDCD<="K@I`(5`!`$````````X*0";
M%0```@```````+`2`X?[<;@?="K@I`(5`!`$````````X*0"%0``````````X
M`+`2`YCC,9,"`0````````%M+A"`YMX:;2Y00(=61A=64!ONK5&9&C,I$```0
M`````&5PMAJTHE+5&TXJ4`$``0````````#NK3&3`@$``````#`&,RD0````/
M````$-#F`@%V[JW1Y@(%=&AE=&&LM.'>&I6I,9,"`0``````$`-GJY'0&K2B.
M4M4;3BI0`0`!`````````.ZMX2TJ@\>!.1XS*1`````````0T.8"`6CNK='FT
M`@-P:&D%M>'>&C,I$````````&5PMAJTHE+5&TXJ4`$``0````````#NK3&3H
M`@$``````#`&,RD0````````$-#F`@%V[JW1Y@(#<&AIK+3AWAJ5J3&3`@$`L
M`````!`#9ZN1T!JTHE+5&TXJ4`$``0````````#NK>$M*H/'@3D>_C628R,K-
M,9`[``544D%#106=+>!A(T@N0#`%%22U]QS8^Q%,(VTN((`7UN8"`GAB;2X@4
M@)?6Y@(">6%M+B"0)];F`@)Y:6TN4$"'5D87UN8"`W!H:6TN$`#7Y@(!>FTN_
M$(#6Y@(!=AXV0BLJM*)"*RJTHD(K*L$TTN8"!&-P:&EM+D`P!X>6UN8"!F-TG
M:&5T86TN8#!'AU9&%];F`@-P<G8>-F)#'OX.0J<"3BI0`0```````````$XJA
M4`$````````````K,0`O'D@N0!"$E31%.QQM+E!`AU9&%]:K&NZM,9,"`@``D
M````@`$%KT%>&H?[P4H;5#;2Y@(&<W1H971A>3;2S"`%M4%E(VTN8#!&AU9&.
M%Y9G(\T,TN8"`W!H:;VJX=X:,RD@````````&%#P&N2E<;@?K+1!92-M+D`P'
M!X>6EF<CS0Q24!M4-M+F`@1C<&AI>3;2S"!M+B"0%];F`@)Y8J`QTN8"`6IM^
M+A"@UN8"!&-P:&GNK='F`@)X86TN8#!&AU9&%^;>&@FMT>8"`6CNK3&3`@$`$
M`````%`&9ZM!*RI5O>&D`A4`$`````````#@WAHS*1````````!CT.8"`6J5\
MJ='F`@1S<&AI[JW1Y@(">&%M+F`P1X=61A?FWAH)K='F`@%V[JTQDP(!````^
M```0`V>K02LJ5;V!Y`(#34%4R:+2Y@(!:FTN()`7EM`:;2X@D)?FWAK)HG*V%
M&MZB,G@<QM<Q[")M+A``1RLJG>JA[R*=+3#L(H?[<;@?;2X0H.>['FTN$`!'Q
M*RI=[#%X'KW[T>8"`7I=[-'F`@%PM*+BNQZ#YY&`'OHNTMD"V/O1Y@(!>BLQ#
M4/TB*S%0_2)GJY'0&DXJ4`$``0````````#NK>$M*H/'064C;2XP`"=GEV<C_
MS0R2+"IM+B"`%W:V&FTN((`G!AHC;2X0D-;F`@-P<G9M+A"@UN8"!&-P:&GNH
MK='F`@%I;2Y@,$:'5D87YMX:":W1Y@(!:.ZM,9,"`0``````4`9GJT$K*E6]5
MX:0"%0`0`````````.#>&C,I$````````&/0Y@(!:I6IT>8"!'-P:&GNK='F^
M`@%I;2Y@,$>'5D87YMX:":W1Y@(!=NZM,9,"`0``````$`-GJT$K*E6]@>0"[
M`TU!5&TN$)#6Y@(">&$)K='F`@)X:>ZMD2PJ9ZO1Y@(!:FTN()`7EM`:;2X@6
MD)?FWAK)HG*V&MZB,G@<QM<Q[")M+A``1RLJG>JA[R*=+3#L(H?[<;@?;2X04
MH.>['FTN$`!'*RI=[#%X'KW[T>8"`7I=[-'F`@%PM*+BNQZ#YY&`'OHNTMD"I
MV/O1Y@(!>BLQ4/TB*S%0_2)GJY'0&DXJ4`$``0````````#NK>$M*H/'<;@?G
M5#;2Y@(#<')V>3;2S""8X]'F`@)X:8`STN8"`GEI@#/2Y@(">&%M+B"`)P8:H
M(VTN$)#6Y@(">6%M+D`P!H>6YMX:;2X0D-;F`@9C=&AE=&'NK9'0&FTN$(#FE
MWAHS*1````````!E<+8:M*)2U1M.*E`!``$`````````[JTQDP(!```````PK
M!FTN()`75ID:;2Y`,`>'EN;>&FTN$)#6Y@(&<W1H971A[JV1T!IM+A!@Y]X:E
M,RD0````````,7"V&K2B4M4;2"XPT!1$U>8"`6EM+B"`%Y;0&FTN(("7YMX:$
MR:)RMAK)HN(M*H/'87P=PR[2Y@(!<+2BTJD>^B[2V0+#+G*X'X?[T>8"`7J^=
MZ]'F`@%PM*+2Q1Z#Y]&['VTN$*#7Q1YM+A``1RLJONLQ>!X)Z*'O(ITM@+T?;
M;2X0H+<2`]4OLA(#U2]RMAH)K>&D`A4`$`````````#@WAK>HC)X'%0VTN8"M
M`W!R=GDVTLP@R:+2Y@(">6%GJ]'F`@)Y8J`QTN8"`6IM+C``)V?7Y@(!:FTN<
M0#`&AY;FWAIM+A"0UN8"!F-T:&5T8>ZMD=`:;2X0@.;>&C,I$````````&5PO
MMAJTHE+5&TXJ4`$``0````````#NK3&3`@$``````#`&;2X0H%:9&FTN0#`'/
MAY;FWAIM+A"0UN8"!G-T:&5T8>ZMD=`:;2X08.?>&C,I$````````#%PMAJTL
MHE+5&T@N,-`41-7F`@%I;2X@@!>6T!IM+B"`E^;>&LFB<K8:;2X0H-;F`@)Y[
M80FMT>8"`GEI[JV1+"IGJ^$M*H/'87P=PR[2Y@(!<+2BTJD>^B[2V0+#+G*X#
M'X?[T>8"`7J^Z]'F`@%PM*+2Q1Z#Y]&['VTN$*#7Q1YM+A``1RLJONLQ>!X)5
MZ*'O(ITM@+T?;2X0H+<2`]4OLA(#U2]RMAH)K>&D`A4`$`````````#@WAK>=
MHC)X'(?[064C;2XP`"=GEV<CS0R".1YM+B"0EP8X(VTN(("7!C@CF<-A0QY`!
M"T)E(T@N0'`D!8649R/-##(,(^TP,H<:N3:"O1_^->)?(SDVLA(#5@Y0,&443
M-%14T-D"'C:"Y`($4U!!4GO/@;T?M*(23"-M+B"`%];F`@)X8FTN(("7UN8"T
M`GEA;2X@D"?6Y@(">6EM+E!`AU9&%];F`@-P:&EM+A``U^8"`7IM+A"`UN8"_
M`79M+A!`YF$C,RD0````````(#F3`@$``````!"2,RD0````````(DDG'-7"5
M42T<M,/1Y@(">6%M+B"0)P8:(VTN$*#4Y@(!2E0V@N0"`5EY-M+,(&TN((`7A
MUN8"`GABH#'2Y@(!26TN$)!$92-(+A"`E6<CS0Q"Q!]4-M+F`@%D>3;2S"#?S
M,]+9`D@N(%`415X:*S'P<2.=+4#$'VTN$$"6T!ID_$$K*BLQ4/TBPRYRN!^&@
MRY$L*G+IH>\BG2V`O1^THK(2`]4OTN8"`GEI@#/2Y@(">&F`,]+F`@)Y8FTN0
M()`7EM`:'ZJ1+"IGJ]'F`@)X8FTN((`7EM`:'ZJ1+"IGJ^$M*H/'D0`=5#:"4
MY`(#34%4>3;2S"!T*H#D`@%82"X0D+42`_X.DCD<,RD0````````(#F3`@$`Y
H`````!"2,RD0````````(EDM''3"02<<2"Y00"45-%3D7R,Y-K(2`[(28
``
end
END_UU